Computer software tools have become indispensable to managing the complexity entailed in designing and manufacturing many modern products. Automobiles are one example of such products.
One aspect of the complexity involved in the design and manufacture of an automobile is the great number and variability of its constituent parts. Typically an automobile model is assembled from a catalogue of parts according to a particular set of design specifications. Because of the number and variability of parts, it can be difficult for designers to ensure that the combinations of the parts are correct.
An approach that uses a computer-based system and associated software to help manage this aspect of complexity is described in U.S. Pat. No. 6,223,094 B1('094). As described in '094, a complex product such as an automobile may be represented in terms of a hierarchical data structure. A top or highest node of the data structure represents the end product (e.g., a compact car), while lower or subordinate nodes represent the components of the end product and associated production processes. A data structure of this kind, used in conjunction with, for example, a graphical user interface (GUI) with various different views tailored to specific user needs, helps to simplify design and production.
More specifically, the GUI may enable users, e.g., designers, to specify particular values for characteristics of a desired end product. The characteristics act to select particular variants of components of the end product. That is, a component may be represented in terms of its function within a product or as an abstraction of materials that may be used for the component, and there may be a number of possible variants associated with the component. The variants may be actual concrete realizations of the function or abstraction of the component: for example, one concrete realization of a component abstracted as a “seat” could be a leather, bucket seat, while another might a be a vinyl, bench-type seat. Based on the characteristics of a desired end product, only one of these realizations might be suitable for inclusion in the end product.
The foregoing is a very simple example; in actual practice, there may be hundreds or thousands of components and associated variants within a node hierarchy. Accordingly, there is a need to ensure that the selection of variants is correct: i.e., that it does not result, for example, in different variants being selected for the same component, or in incompatible components being combined. One way in which this need is addressed in the art is to provide user-defined “selection conditions” associated with component variants. A selection condition defines a set of conditions under which a particular variant of a component may be selected for inclusion into a product. A selection condition may take the form of a logical expression comprising operators that act on values specified for product characteristics.
In a design and manufacturing process for a complex product such as an automobile, such selection conditions are typically very numerous, and change frequently. Accordingly, it represents a significant cost in time and effort that, in known product design and manufacture systems, selection conditions are generated and maintained manually. That is, a user of such systems, such as a designer, must consider all the possible variants of a component that may go into a product, and design and manually encode all the corresponding selection conditions. Moreover, while the selection conditions may be relatively simple logical expressions for low-level, basic components, they may become inordinately complicated for higher-level assemblies of these basic components, since with each level upwards the number of theoretically possible combination increases.
In view of the foregoing considerations, it may be appreciated that generating selection conditions manually can be laborious and error-prone. Accordingly, an approach is needed to more efficiently generate selection conditions.